<?php

namespace App\Http\Controllers\Admin;


use App\Http\Controllers\Controller;
//use http\Client\Curl\User;
use App\Models\User;             // 引入模型
use Illuminate\Http\Request;

use Illuminate\Support\Facades\Validator;     // 后台表单验证
use Illuminate\Support\Facades\Hash;           // 哈希加密
use Illuminate\Support\Facades\Crypt;           // crypt加密

class LoginToController extends Controller
{
    // 后台登录页
    public function login(){
        return  view('admin.login');
    }

    // 执行表单验证
    public function doLogin(Request $request){
        // 1、接收表单提交的数据
        $input = $request->except('_token') ;

        //2．进行表单验证
        $rule = [
            'username'=>'required|between:2,30',
            'password'=>'required|between:6,18|alpha_dash',
            'code'=>'required|between:4,4',
            'hidden_code'=>'required|between:4,4',
        ];
        $msg = [
            'username.required'=>'用户名必须输入',
            'username.between'=>'用户名不少于2个字符',
            'password.required'=>'密码必须输入',
            'password.between'=>'密码长度必须在6-18位之间',
            'password.alpha_dash'=>'密码必须是数组字母下滑线',
            'code.between'=>'验证码必需是4位数字',
        ];
        $validator = Validator::make($input,$rule,$msg) ;   // 表单数据, 验证规则, 错误信息
        // 检验必要字段
        if ($validator->fails()) {
            return redirect('admin/login')->withErrors($validator);
        }
        // 检验验证码
        if($input['code'] != $input['hidden_code']){
            return redirect('admin/login')->withErrors('验证码错误');
        }

        // 3. 验证用户
        $user = User::where("username",$input['username'])->first();
        // 相当于 User.objects.filter(nickname=nickname, sex=1).first ()
        if(!$user){
            return redirect('admin/login')->withErrors('用户名为空');
        }
        if($input['password'] != Crypt::decrypt($user->password) ){
            return redirect('admin/login')->withErrors('输入的密码错误');
        }

        // 4.保存用户信息到服务器session中,并跳转主页
        session()->put('userinfo',$user);

        // 5.登录成功，跳转首页
        return redirect('admin/index');
    }

    // 后台首页
    public function index(){
        return view("admin.index");
    }
    public function welcome(){
        return view("admin.welcome");
    }

    // 执行密码加密
    public function doEncrypt($str=null,$crypt_str=null){
        // 3.crypt加密
        if(!$str){
            return Crypt::encrypt($str);
        }else{
            if($str == Crypt::decrypt($crypt_str)){
                return '密码正确';
            }else{
                return '密码错误';
            }
        }
    }

    // 执行密码加密(测试)
    public function doEncryptTest(Request $request){
        $str = $request->input('str') ;
        $crypt_str = $request->input('crypt_str') ;
        if(!$crypt_str){
            echo Crypt::encrypt($str);
        }else{
            echo $str == Crypt::decrypt($crypt_str);
        }
    }
}
